/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Fundamentacao.java
 *
 * Created on 13/10/2010, 23:26:19
 */

package aprendizadosemfio;

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

/**
 *
 * @author Administrador
 */
public class Fundamentacao extends javax.swing.JFrame {

    private String redesSemFio = "\t\t\tUma rede sem fio ou wireless refere-se a uma rede de computadores sem a necessidade do uso de cabos – sejam eles telefônicos, coaxiais ou ópticos – por meio de equipamentos que usam radiofrequência (comunicação via ondas de rádio) ou comunicação via infravermelho, como em dispositivos compatíveis com IrDA.\n\t\t\tO uso da tecnologia vai desde transceptores de rádio como walkie-talkies até satélites artificais no espaço. Seu uso mais comum é em redes de computadores, servindo como meio de acesso à Internet através de locais remotos como um escritório, um bar, um aeroporto, um parque, ou até mesmo em casa, etc.";
    private String tipos = "\t\t\tA classificação das redes sem fio é baseada na área de abrangência: redes pessoais ou curta distância (WPAN), redes locais (WLAN), redes metropolitanas (WMAN) e redes geograficamente distribuídas ou de longa distância (WWAN).";
    private String WPAN = "\t\t\tWPAN (Wireless PAN, Wireless Personal Area Network) está normalmente associada ao Bluetooth (antigamente ao IR). Pode ser vista com a interação entre os dispositivos móveis de um utilizador. A WPAN é projectada pra pequenas distâncias, baixo custo e baixas taxas de transferência.";
    private String WLAN = "\t\t\tWireless LAN ou WLAN (Wireless Local Area Network) é uma rede local que usa ondas de rádio para fazer uma conexão Internet ou entre uma rede, ao contrário da rede fixa ADSL ou conexão-TV, que geralmente usa cabos. WLAN já é muito importante como opção de conexão em muitas áreas de negócio.\n\t\t\tInicialmente os WLANs foram instalados nas universidades, nos aeroportos, e em outros lugares públicos. A diminuição dos custos do equipamento de WLAN trouxe-o também a muitos locais particulares.\n\t\t\tEntretanto, no Reino Unido o custo de usar tais conexões limitou assim o uso aos lounges das Businessclass dos aeroportos, etc. Nova Iorque começou um programa piloto para cobrir todos os cinco quarteirões da cidade com a Internet Wireless.\n\t\t\tOriginalmente a WLAN era muito cara e foi somente usada como uma alternativa ao LAN-Internet com cabo nos lugares onde instalar cabos era difícil ou impossível. Tais lugares poderiam ser edifícios ou salas de aula, embora a escala restrita o padrão IEEE_802.11b limitasse seu uso aos edifícios menores.\n\t\t\tOs componentes de WLAN são agora baratos o bastante para serem usados nas horas de repouso e podem ser usados para compartilhar uma conexão Internet com a família inteira.\n\t\t\tForam feitos desenvolvimentos nos padrões de transmissão com os protocolos proprietários, mas no fim dos anos 90 estes foram substituídos por padrões, de várias versões IEEE_802.11 (Wi-Fi) ou HomeRF (2 Mb/s, para o uso caseiro).\n\t\t\tA falta da segurança das conexões wireless é um ponto fraco, porém muitas (ADSL) conexões broadband são oferecidas agora junto com um ponto de acesso wireless com possibilidade de usar protocolos mais seguros como o WPA.\n\t\t\tMuitos Computadores portáteis já vêm agora de fábrica com WiFi Centrino instalado e assim eliminam a necessidade de um cartão adicional com encaixe (PCMCIA). O uso de Windows XP ou Ubuntu GNU/Linux torna muito fácil configurar um PC como cliente de WLAN e permite aos PCs o acesso o Internet através dos Hotspots (estações base).\n\t\t\tEntretanto a falta da perícia em ajustar tais sistemas significa frequentemente que seu vizinho compartilha também de sua conexão Internet, às vezes sem você (ou eles) se darem conta.\n\t\t\tA frequência em que 802.11b se opera é 2.4GHz, a que pode conduzir interferência com muitos telefones sem fio.";
    private String WMAN = "\t\t\tEsse escopo se refere a redes metropolitanas: redes de uso corporativo que atravessam cidades e estados. Essa conexão é utilizada na prática entre os provedores de acesso e seus pontos de distribuição.\n\t\t\tA WiMax (padrão 802.16) é um dos últimos padrões de banda larga para rede MAN (Metropolitan Area Network/Rede de Área Metropolitana) definido pelo IEEE, em certo aspecto muito similar ao padrão Wi-FI (IEEE 802.11) já muito difundido.\n\t\t\tO padrão WiMAX tem como objetivo estabelecer a parte final da infra-estrutura de conexão de banda-larga (last mile) oferecendo conectividade para mais diversos fins: por exemplo uso doméstico, hotspot e empresarial.\n\t\t\t\t\t\t-- É um padrão que define as camadas física e de rede de dados de conexão banda larga;\n\t\t\t\t\t\t-- Suporta múltiplas especificações na camada física;\n\t\t\t\t\t\t-- Possibilitará, após finalização da especificação técnica, a capacidade de estabelecer uma rede 'mesh', compartilhando recursos e diminuindo custos da rede;\n\t\t\t\t\t\t-- Estabelecer uma conexão mais direta da rede doméstica com a rede principal (core network) da internet.\n\t\t\t\t\t\t-- Oferece conexão de até 75 Mbps em um raio de 50 km;\n\t\t\t\t\t\t-- Possui especificação de espectro de RF de 2 a 66Ghz.\n\t\t\tOriginalmente, o padrão 802.16, que foi ratificado em Dezembro de 2001, estava focando basicamente as faixas de freqüências situadas entre 10GHz e 66GHz considerando sempre aplicações com linha de visada. A versão 802.16a, que foi concluída em 2003, passou a focar as aplicações sem linha de visada, dentro das faixas de freqüência entre 2GHZ e 11GHZ, considerando também os aspectos de interoperabilidade.";
    private String WWAN = "\t\t\tNas redes WWAN temos as tradicionais tecnologias do nosso famoso Telefone Celular de voz e alguns serviços de dados (Wireless Data Services). Temos as seguintes tecnologias nessa categoria começando pela sigla TDMA que vem do inglês Time Division Multiple Access , que quer dizer \"Acesso Múltiplo por Divisão de Tempo\".\n\t\t\tO TDMA é um sistema de celular digital que funciona dividindo um canal de frequência em até seis intervalos de tempo distintos. Cada usuário ocupa um espaço de tempo específico na transimissão, o que impede problemas de interferência. Os sistemas celulares de segunda geração como o IS 54, IS 136 e o GSM utilizam o TDMA na sua interface com a estação móvel.\n\t\t\tUm dos padrões de comunicação de voz via ondas de rádio, utilizado por operadoras nos serviços de telefonia celular digital, baseado em TDM consiste na divisão de cada canal celular em três períodos de tempo para aumentar a quantidade de dados que pode ser transmitida.\n\t\t\tCada canal TDMA americano tem a mesma largura de banda dos canais AMPS, 30 KHz, e é usado por três assinantes. O sinal digitalizado de cada assinante, de 64 Kbps, é comprimido para 8 Kbps por vocoders (padrão IS-54). Em seguida, o sinal comprimido dos três assinantes é transmitido pelo mesmo canal, um por vez.\n\t\t\tOs padrões TDMA IS-54 e IS-136, portanto, aumentam em três vezes a capacidade do padrão AMPS. O padrão IS-136 difere do IS-54 pela introdução de um canal de controle digital.";
    private String padroes= "\t\t\t-- IrDA - Infrared Data Association.\n"+
                            "\t\t\t-- ZigBee (IEEE 802.15.4).\n"+
                            "\t\t\t-- Bluetooth é uma tecnologia para a comunicação sem fio entre dispositivos eletrônicos a curtas distâncias.\n"+
                            "\t\t\t-- RONJA é uma tecnologia livre e aberta para a comunicação sem fio Ponto-a-Ponto (P2P) por meio de luz do espectro visível ou infravermelho através do ar.\n"+
                            "\t\t\t-- Wi-Fi (IEEE 802.11).\n"+
                            "\t\t\t-- WiMAX (IEEE 802.16).\n"+
                            "\t\t\t-- Mesh (IEEE 802.11s).";


    /** Creates new form Fundamentacao */
    public Fundamentacao() {
        initComponents();
        preencheArvore();
        StyledDocument doc = this.fundamentacaoTextPane.getStyledDocument();

        MutableAttributeSet standard = new SimpleAttributeSet();
        StyleConstants.setAlignment(standard, StyleConstants.ALIGN_JUSTIFIED); //atribui cor vermelha
        StyleConstants.setFontSize(standard,16);
        StyleConstants.setFontFamily(standard, "ARIAL");
        doc.setParagraphAttributes(0, 0, standard, true);
    }

    private void preencheArvore()
    {        
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Assuntos");
        DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Redes Sem Fio");
        root.add(child1);
        DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("O que são?");
        DefaultMutableTreeNode child3 = new DefaultMutableTreeNode("Quais Tipos?");
        child1.add(child2);
        child1.add(child3);
        DefaultMutableTreeNode child4 = new DefaultMutableTreeNode("WPAN");
        DefaultMutableTreeNode child5 = new DefaultMutableTreeNode("WLAN");
        DefaultMutableTreeNode child6 = new DefaultMutableTreeNode("WMAN");
        DefaultMutableTreeNode child7 = new DefaultMutableTreeNode("WWAN");
        DefaultMutableTreeNode child8 = new DefaultMutableTreeNode("Padrões e Tecnologias");
        child1.add(child8);
        child3.add(child4);
        child3.add(child5);
        child3.add(child6);
        child3.add(child7);
        DefaultTreeModel model = new DefaultTreeModel(root);
        arvoreTree.setModel(model);
        arvoreTree.updateUI();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        arvoreTree = new javax.swing.JTree();
        jScrollPane2 = new javax.swing.JScrollPane();
        fundamentacaoTextPane = new javax.swing.JTextPane();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Árvore de Conceitos"));

        jPanel2.setBackground(new java.awt.Color(255, 255, 255));
        jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        arvoreTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
                arvoreTreeValueChanged(evt);
            }
        });
        jScrollPane1.setViewportView(arvoreTree);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE)
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
        );

        jScrollPane2.setViewportView(fundamentacaoTextPane);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void arvoreTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_arvoreTreeValueChanged
        if(arvoreTree.getLeadSelectionRow()==2)
        {
            fundamentacaoTextPane.setText(redesSemFio);
            fundamentacaoTextPane.getCaret().moveDot(0);
        }
        else if(arvoreTree.getLeadSelectionRow()==3)
        {
            fundamentacaoTextPane.setText(tipos);
            fundamentacaoTextPane.getCaret().moveDot(0);
        }
        else if(arvoreTree.getLeadSelectionRow()==4)
        {
            fundamentacaoTextPane.setText(WPAN);
            fundamentacaoTextPane.getCaret().moveDot(0);
        }
        else if(arvoreTree.getLeadSelectionRow()==5)
        {
            fundamentacaoTextPane.setText(WLAN);
            fundamentacaoTextPane.getCaret().moveDot(0);
        }
        else if(arvoreTree.getLeadSelectionRow()==6)
        {
            fundamentacaoTextPane.setText(WMAN);
            fundamentacaoTextPane.getCaret().moveDot(0);
        }
        else if(arvoreTree.getLeadSelectionRow()==7)
        {
            fundamentacaoTextPane.setText(WWAN);
            fundamentacaoTextPane.getCaret().moveDot(0);
        }
        else if(arvoreTree.getLeadSelectionRow()==8)
        {
            fundamentacaoTextPane.setText(padroes);
            fundamentacaoTextPane.getCaret().moveDot(0);
        }
        else
            fundamentacaoTextPane.setText("");
    }//GEN-LAST:event_arvoreTreeValueChanged

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Fundamentacao().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTree arvoreTree;
    private javax.swing.JTextPane fundamentacaoTextPane;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    // End of variables declaration//GEN-END:variables

}
